/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatecpg.linguagem.contabilidade;

import java.math.BigDecimal;
import java.math.MathContext;

/**
 *
 * @author Fatec
 */
public class DadosEmpresa {
    // <   ATIVO/CIRCULANTE>

    private String nome;
    private String cnpj;
    private Valor banco;
    private Valor aplicacoes;
    private Valor caixa;
    private Valor duplicatasAReceber;
    private Valor estoque;
    private Valor ICMSARecuperar; //automatico
    private Valor materiaisDeEscritorio;
    private Valor materiaisDeLimpeza;
    // </  ATIVO/CIRCULANTE>
    // <  ATIVO/NÃO CIRCULANTE>
    private Valor automovel;
    private Valor informatica;
    private Valor movel;
    private Valor investimentos;
    private Valor depreciacao;
    private Valor marketing;
    // </  ATIVO/NÃO CIRCULANTE>
    // <  PASSIVO/CIRCULANTE>
    private Valor fornecedor;
    private Valor duplicatasAPagar;
    private Valor ICMSARecolher;
    private Valor salarios;
    private Valor agua;
    private Valor energiaEletrica;
    private Valor telefone;
    private Valor aluguel;
    // </  PASSIVO/CIRCULANTE>
    // <  PASSIVO/NÃO CIRCULANTE>
    private Valor duplicasAPagar_passivo;
    // </  PASSIVO/NÃO CIRCULANTE>
    // <CMV>
    private Valor cmv;
    // </ CMV>
    // <PATRIMONIO LIQUIDO>
    private Valor capitalSocial;
    private Valor reservaDeCapital;
    private Valor lucro;
    // </ PATRIMONIO LIQUIDO>
    // <RECEITA>
    private Valor venda;
    private Valor ICMSSobreVenda; //automatico
    private Valor jurosAtivo;
    private Valor descontoObtido;
    // </ RECEITA>
    // <DESPESA>
    private Valor jurosPassivo;
    private Valor descontoConcebido;
    // </ DESPESA>
    // <VERIFICAÇÃO>
    private Valor debito;
    private Valor credito;
    // </ VERIFICAÇÃO>
    //GETTERS AND SETTERS PARA TODOS OS CAMPOS (Alt + Insert)

    public Valor getICMSARecolher() {
        return ICMSARecolher;
    }

    public void setICMSARecolher(Valor ICMSARecolher) {
        this.ICMSARecolher = ICMSARecolher;
    }

    public Valor getICMSARecuperar() {
        return ICMSARecuperar;
    }

    public void setICMSARecuperar(Valor ICMSARecuperar) {
        this.ICMSARecuperar = ICMSARecuperar;
    }

    public Valor getICMSSobreVenda() {
        return ICMSSobreVenda;
    }

    public void setICMSSobreVenda(Valor ICMSSobreVenda) {
        this.ICMSSobreVenda = ICMSSobreVenda;
    }

    public Valor getAgua() {
        return agua;
    }

    public void setAgua(Valor agua) {
        this.agua = agua;
    }

    public Valor getAluguel() {
        return aluguel;
    }

    public void setAluguel(Valor aluguel) {
        this.aluguel = aluguel;
    }

    public Valor getAplicacoes() {
        return aplicacoes;
    }

    public void setAplicacoes(Valor aplicacoes) {
        this.aplicacoes = aplicacoes;
    }

    public Valor getAutomovel() {
        return automovel;
    }

    public void setAutomovel(Valor automovel) {
        this.automovel = automovel;
    }

    public Valor getBanco() {
        return banco;
    }

    public void setBanco(Valor banco) {
        this.banco = banco;
    }

    public Valor getCaixa() {
        return caixa;
    }

    public void setCaixa(Valor caixa) {
        this.caixa = caixa;
    }

    public Valor getCapitalSocial() {
        return capitalSocial;
    }

    public void setCapitalSocial(Valor capitalSocial) {
        this.capitalSocial = capitalSocial;
    }

    public Valor getCmv() {
        return cmv;
    }

    public void setCmv(Valor cmv) {
        this.cmv = cmv;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public Valor getCredito() {
        return credito;
    }

    public void setCredito(Valor credito) {
        this.credito = credito;
    }

    public Valor getDebito() {
        return debito;
    }

    public void setDebito(Valor debito) {
        this.debito = debito;
    }

    public Valor getDepreciacao() {
        return depreciacao;
    }

    public void setDepreciacao(Valor depreciacao) {
        this.depreciacao = depreciacao;
    }

    public Valor getDescontoConcebido() {
        return descontoConcebido;
    }

    public void setDescontoConcebido(Valor descontoConcebido) {
        this.descontoConcebido = descontoConcebido;
    }

    public Valor getDescontoObtido() {
        return descontoObtido;
    }

    public void setDescontoObtido(Valor descontoObtido) {
        this.descontoObtido = descontoObtido;
    }

    public Valor getDuplicasAPagar_passivo() {
        return duplicasAPagar_passivo;
    }

    public void setDuplicasAPagar_passivo(Valor duplicasAPagar_passivo) {
        this.duplicasAPagar_passivo = duplicasAPagar_passivo;
    }

    public Valor getDuplicatasAPagar() {
        return duplicatasAPagar;
    }

    public void setDuplicatasAPagar(Valor duplicatasAPagar) {
        this.duplicatasAPagar = duplicatasAPagar;
    }

    public Valor getDuplicatasAReceber() {
        return duplicatasAReceber;
    }

    public void setDuplicatasAReceber(Valor duplicatasAReceber) {
        this.duplicatasAReceber = duplicatasAReceber;
    }

    public Valor getEnergiaEletrica() {
        return energiaEletrica;
    }

    public void setEnergiaEletrica(Valor energiaEletrica) {
        this.energiaEletrica = energiaEletrica;
    }

    public Valor getEstoque() {
        return estoque;
    }

    public void setEstoque(Valor estoque) {
        this.estoque = estoque;
    }

    public Valor getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(Valor fornecedor) {
        this.fornecedor = fornecedor;
    }

    public Valor getInformatica() {
        return informatica;
    }

    public void setInformatica(Valor informatica) {
        this.informatica = informatica;
    }

    public Valor getInvestimentos() {
        return investimentos;
    }

    public void setInvestimentos(Valor investimentos) {
        this.investimentos = investimentos;
    }

    public Valor getJurosAtivo() {
        return jurosAtivo;
    }

    public void setJurosAtivo(Valor jurosAtivo) {
        this.jurosAtivo = jurosAtivo;
    }

    public Valor getJurosPassivo() {
        return jurosPassivo;
    }

    public void setJurosPassivo(Valor jurosPassivo) {
        this.jurosPassivo = jurosPassivo;
    }

    public Valor getLucro() {
        return lucro;
    }

    public void setLucro(Valor lucro) {
        this.lucro = lucro;
    }

    public Valor getMarketing() {
        return marketing;
    }

    public void setMarketing(Valor marketing) {
        this.marketing = marketing;
    }

    public Valor getMateriaisDeEscritorio() {
        return materiaisDeEscritorio;
    }

    public void setMateriaisDeEscritorio(Valor materiaisDeEscritorio) {
        this.materiaisDeEscritorio = materiaisDeEscritorio;
    }

    public Valor getMateriaisDeLimpeza() {
        return materiaisDeLimpeza;
    }

    public void setMateriaisDeLimpeza(Valor materiaisDeLimpeza) {
        this.materiaisDeLimpeza = materiaisDeLimpeza;
    }

    public Valor getMovel() {
        return movel;
    }

    public void setMovel(Valor movel) {
        this.movel = movel;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Valor getReservaDeCapital() {
        return reservaDeCapital;
    }

    public void setReservaDeCapital(Valor reservaDeCapital) {
        this.reservaDeCapital = reservaDeCapital;
    }

    public Valor getSalarios() {
        return salarios;
    }

    public void setSalarios(Valor salarios) {
        this.salarios = salarios;
    }

    public Valor getTelefone() {
        return telefone;
    }

    public void setTelefone(Valor telefone) {
        this.telefone = telefone;
    }

    public Valor getVenda() {
        return venda;
    }

    public void setVenda(Valor venda) {
        this.venda = venda;
    }
    // CONSTRUTOR
    //FICOU GIGANTE O CONSTRUTOR POR CAUSA DO NUMERO DE CAMPOS

    public DadosEmpresa(String nome, String cnpj, Valor banco, Valor aplicacoes, Valor caixa, Valor duplicatasAReceber, Valor estoque, Valor ICMSARecuperar, Valor materiaisDeEscritorio, Valor materiaisDeLimpeza, Valor automovel, Valor informatica, Valor movel, Valor investimentos, Valor depreciacao, Valor marketing, Valor fornecedor, Valor duplicatasAPagar, Valor ICMSARecolher, Valor salarios, Valor agua, Valor energiaEletrica, Valor telefone, Valor aluguel, Valor duplicasAPagar_passivo, Valor cmv, Valor capitalSocial, Valor reservaDeCapital, Valor lucro, Valor venda, Valor ICMSSobreVenda, Valor jurosAtivo, Valor descontoObtido, Valor jurosPassivo, Valor descontoConcebido, Valor debito, Valor credito) {
        this.nome = nome;
        this.cnpj = cnpj;
        this.banco = banco;
        this.aplicacoes = aplicacoes;
        this.caixa = caixa;
        this.duplicatasAReceber = duplicatasAReceber;
        this.estoque = estoque;
        this.ICMSARecuperar = ICMSARecuperar;
        this.materiaisDeEscritorio = materiaisDeEscritorio;
        this.materiaisDeLimpeza = materiaisDeLimpeza;
        this.automovel = automovel;
        this.informatica = informatica;
        this.movel = movel;
        this.investimentos = investimentos;
        this.depreciacao = depreciacao;
        this.marketing = marketing;
        this.fornecedor = fornecedor;
        this.duplicatasAPagar = duplicatasAPagar;
        this.ICMSARecolher = ICMSARecolher;
        this.salarios = salarios;
        this.agua = agua;
        this.energiaEletrica = energiaEletrica;
        this.telefone = telefone;
        this.aluguel = aluguel;
        this.duplicasAPagar_passivo = duplicasAPagar_passivo;
        this.cmv = cmv;
        this.capitalSocial = capitalSocial;
        this.reservaDeCapital = reservaDeCapital;
        this.lucro = lucro;
        this.venda = venda;
        this.ICMSSobreVenda = ICMSSobreVenda;
        this.jurosAtivo = jurosAtivo;
        this.descontoObtido = descontoObtido;
        this.jurosPassivo = jurosPassivo;
        this.descontoConcebido = descontoConcebido;
        this.debito = debito;
        this.credito = credito;
    }

    public String gerarDRE(DadosEmpresa dados) {
        String saida = "EMPRESA...................................." + dados.getNome() + "\n";
        saida += "CNPJ......................................." + dados.getCnpj() + "\n \n";
        saida += "--------------------------------------------\n";
        saida += "RECEITA BRUTA.............................." + (dados.getVenda().getValorLong() + dados.getICMSSobreVenda().getValorLong() + dados.getJurosAtivo().getValorLong() + dados.getDescontoObtido().getValorLong()) + "\n";
        saida += "    Deduções e Abatimentos................." + (dados.getICMSSobreVenda().getValorLong()) + "\n";
        saida += "RECEITA OPERACIONAL LIQUIDA................" + ((dados.getVenda().getValorLong() + dados.getICMSSobreVenda().getValorLong() + dados.getJurosAtivo().getValorLong() + dados.getDescontoObtido().getValorLong()) - (dados.getICMSSobreVenda().getValorLong())) + "\n";
        saida += "    (-)CMV................................." + (dados.getCmv().getValorLong()) + "\n";
        saida += "LUCRO BRUTO................................" + ((dados.getVenda().getValorLong() + dados.getICMSSobreVenda().getValorLong() + dados.getJurosAtivo().getValorLong() + dados.getDescontoObtido().getValorLong()) - (dados.getICMSSobreVenda().getValorLong() + dados.getCmv().getValorLong())) + "\n";
        saida += "    (-)Despesas Operacionais..............." + "" + "\n";
        saida += "        Automoveis........................." + dados.getAutomovel().getValorLong() + "\n";
        saida += "        Informática........................" + dados.getInformatica().getValorLong() + "\n";
        saida += "        Movel.............................." + dados.getMovel().getValorLong() + "\n";
        saida += "        Investimento......................." + dados.getInvestimentos().getValorLong() + "\n";
        saida += "        Depreciação........................" + dados.getDepreciacao().getValorLong() + "\n";
        saida += "        Marketing.........................." + dados.getMarketing().getValorLong() + "\n";
        saida += "    (+)Receitas Financeiras................" + "" + "\n";
        saida += "LUCRO OPERACIONAL.........................." + ((dados.getVenda().getValorLong() + dados.getICMSSobreVenda().getValorLong() + dados.getJurosAtivo().getValorLong() + dados.getDescontoObtido().getValorLong()) - (dados.getICMSSobreVenda().getValorLong() + dados.getCmv().getValorLong() + dados.getAutomovel().getValorLong() + dados.getInformatica().getValorLong() + dados.getMovel().getValorLong() + dados.getInvestimentos().getValorLong() + dados.getDepreciacao().getValorLong() + dados.getMarketing().getValorLong())) + "\n";
        saida += "    (+)Receitas............................" + "" + "\n";
        saida += "    (-)Despesas............................" + "" + "\n";
        saida += "       Fornecedor.........................." + dados.getFornecedor().getValorLong() + "\n";
        saida += "       Duplicatas a Pagar.................." + dados.getDuplicasAPagar_passivo().getValorLong() + "\n";
        saida += "       ICMS a Recolher....................." + dados.getICMSARecolher().getValorLong() + "\n";
        saida += "       Salários e Encargos................." + dados.getSalarios().getValorLong() + "\n";
        saida += "       Agua................................" + dados.getAgua().getValorLong() + "\n";
        saida += "       Energia Elétrica...................." + dados.getEnergiaEletrica().getValorLong() + "\n";
        saida += "       Telefone............................" + dados.getTelefone().getValorLong() + "\n";
        saida += "       Aluguel............................." + dados.getAluguel().getValorLong() + "\n";
        saida += "LUCRO LÍQUIDO.............................." + ((dados.getVenda().getValorLong() + dados.getICMSSobreVenda().getValorLong() + dados.getJurosAtivo().getValorLong() + dados.getDescontoObtido().getValorLong()) - (dados.getICMSSobreVenda().getValorLong() + dados.getCmv().getValorLong() + dados.getAutomovel().getValorLong() + dados.getInformatica().getValorLong() + dados.getMovel().getValorLong() + dados.getInvestimentos().getValorLong() + dados.getDepreciacao().getValorLong() + dados.getMarketing().getValorLong() + dados.getFornecedor().getValorLong() + dados.getDuplicasAPagar_passivo().getValorLong() + dados.getICMSARecolher().getValorLong() + dados.getSalarios().getValorLong() + dados.getEnergiaEletrica().getValorLong() + dados.getAgua().getValorLong() + dados.getTelefone().getValorLong() + dados.getAluguel().getValorLong())) + "\n";
        return saida;
    }

    public String gerarBalanco(DadosEmpresa dados) {
        String saida = "EMPRESA...................................." + dados.getNome() + "\n";
        saida += "CNPJ......................................." + dados.getCnpj() + "\n \n";
        saida += "--------------------------------------------\n";
        saida += "                BALANÇO PATRIMONIAL         \n\n";
        saida += "ATIVO\n\n";
        saida += "   CIRCULANTE\n";
        saida += "      Banco................................" + dados.getBanco().getValorLong() + "\n";
        saida += "      Caixa................................" + dados.getCaixa().getValorLong() + "\n";
        saida += "      Estoque.............................." + dados.getEstoque().getValorLong() + "\n";
        saida += "      Duplicatas a Receber................." + dados.getDuplicatasAReceber().getValorLong() + "\n";
        saida += "      ICMS a Recuperar....................." + dados.getICMSARecuperar().getValorLong() + "\n";
        saida += "      Aplicações..........................." + dados.getAplicacoes().getValorLong() + "\n";
        saida += "      Materiais de Escritório.............." + dados.getMateriaisDeEscritorio().getValorLong() + "\n";
        saida += "      Materiais de Limpeza................." + dados.getMateriaisDeLimpeza().getValorLong() + "\n";
        saida += "   TOTAL ATIVO CIRCULANTE.................." + (dados.getMateriaisDeLimpeza().getValorLong() + dados.getMateriaisDeEscritorio().getValorLong() + dados.getAplicacoes().getValorLong() + dados.getICMSARecuperar().getValorLong() + dados.getDuplicatasAReceber().getValorLong() + dados.getEstoque().getValorLong() + dados.getCaixa().getValorLong() + dados.getBanco().getValorLong()) + "\n\n";
        saida += "   NÃO CIRCULANTE\n";
        saida += "      INVESTIMENTOS\n";
        saida += "         Marketing........................." + dados.getMarketing().getValorLong() + "\n";
        saida += "         Investimentos....................." + dados.getInvestimentos().getValorLong() + "\n";
        saida += "      IMOBILIZADO\n";
        saida += "         Imóveis..........................." + dados.getMovel().getValorLong() + "\n";
        saida += "         Informátiva......................" + dados.getInformatica().getValorLong() + "\n";
        saida += "         Automóveis......................." + dados.getAutomovel().getValorLong() + "\n";
        saida += "         Depreciação......................" + dados.getDepreciacao().getValorLong() + "\n";
        saida += "   TOTAL ATIVO NÃO CIRCULANTE............." + (dados.getDepreciacao().getValorLong() + dados.getAutomovel().getValorLong() + dados.getInformatica().getValorLong() + dados.getMovel().getValorLong() + dados.getInvestimentos().getValorLong() + dados.getMarketing().getValorLong()) + "\n\n";
        saida += "TOTAL ATIVO..............................." + (dados.getDepreciacao().getValorLong() + dados.getAutomovel().getValorLong() + dados.getInformatica().getValorLong() + dados.getMovel().getValorLong() + dados.getInvestimentos().getValorLong() + dados.getMarketing().getValorLong() + dados.getMateriaisDeLimpeza().getValorLong() + dados.getMateriaisDeEscritorio().getValorLong() + dados.getAplicacoes().getValorLong() + dados.getICMSARecuperar().getValorLong() + dados.getDuplicatasAReceber().getValorLong() + dados.getEstoque().getValorLong() + dados.getCaixa().getValorLong() + dados.getBanco().getValorLong()) + "\n\n";
        //PASSIVO
        saida += "PASSIVO\n\n";
        saida += "   CIRCULANTE\n";
        saida += "      Duplicatas a pagar..................." + dados.getDuplicasAPagar_passivo().getValorLong() + "\n";
        saida += "      Fornecedores........................." + dados.getFornecedor().getValorLong() + "\n";
        saida += "      Salários e Encargos.................." + dados.getSalarios().getValorLong() + "\n";
        saida += "      Água................................." + dados.getAgua().getValorLong() + "\n";
        saida += "      Luz.................................." + dados.getEnergiaEletrica().getValorLong() + "\n";
        saida += "      Telefone............................." + dados.getTelefone().getValorLong() + "\n";
        saida += "      Aluguel.............................." + dados.getAluguel().getValorLong() + "\n";
        saida += "   TOTAL PASSIVO CIRCULANTE................" + (dados.getDuplicasAPagar_passivo().getValorLong() + dados.getFornecedor().getValorLong() + dados.getSalarios().getValorLong() + dados.getAgua().getValorLong() + dados.getEnergiaEletrica().getValorLong() + dados.getTelefone().getValorLong() + dados.getAluguel().getValorLong()) + "\n\n";
        saida += "   NÃO CIRCULANTE\n";
        saida += "      Duplicatas a pagar..................." + dados.getDuplicatasAPagar().getValorLong() + "\n";
        saida += "   TOTAL PASSIVO NÃO CIRCULANTE............" + dados.getDuplicatasAPagar().getValorLong() + "\n";
        saida += "   PATRIMÔNIO LÍQUIDO\n";
        saida += "      Capital Social......................." + dados.getCapitalSocial().getValorLong() + "\n";
        saida += "      Reserva de Capital..................." + dados.getReservaDeCapital().getValorLong() + "\n";
        saida += "      Lucro................................" + dados.getLucro().getValorLong() + "\n";
        saida += "   TOTAL PATRIMÔNIO LÍQUIDO................" + (dados.getCapitalSocial().getValorLong() + dados.getReservaDeCapital().getValorLong() + dados.getLucro().getValorLong()) + "\n\n";
        saida += "TOTAL PASSIVO.............................." + (dados.getDuplicasAPagar_passivo().getValorLong() + dados.getFornecedor().getValorLong() + dados.getSalarios().getValorLong() + dados.getAgua().getValorLong() + dados.getEnergiaEletrica().getValorLong() + dados.getTelefone().getValorLong() + dados.getAluguel().getValorLong() + dados.getDuplicatasAPagar().getValorLong() + dados.getCapitalSocial().getValorLong() + dados.getReservaDeCapital().getValorLong() + dados.getLucro().getValorLong()) + "\n\n";
        return saida;
    }
}